/*
    Linear Programming Library
    
    Created by Team Paragon (Shena Hoffmann, Arthur Powalka, Nasir Kenarangui)
    CSCE 689
    
    Exceptions.h
    Header file containing declarations for the Exception classes used for checking user input.
*/

#ifndef Exceptions_H
#define Exceptions_H

#include <string>
#include <exception>
using namespace std;

// --------- Generic LinProg Exception Class ---------

class LinProgException : public exception
{
public:
   virtual const char* what() const throw();
};

// --------- InvalidInequalityException class ---------
// Indicates that the inequality operators are not of the expected form

class InvalidInequalityException : public LinProgException 
{
public:
    virtual const char* what() const throw();
};

// --------- InvalidCoeffsException class ---------
// Indicates that the coefficients of either the objective function, constraint function, or constrained variables are not the same size

class InvalidCoeffsException : public LinProgException 
{
private:
    string problem;
public:
    InvalidCoeffsException(string problemVar);
    virtual const char* what() const throw();
};

// --------- InvalidConstraintsException class ---------
// Indicates that the number of constraints equations does not match the number of right-hand side equation values or the number of inequality operators

class InvalidConstraintsException : public LinProgException 
{
private:
    string problem;
public:
    InvalidConstraintsException(string problemVar);
    virtual const char* what() const throw();
};

#endif